package aceim.api.dataentity;
import aceim.api.utils.Utils;
import android.os.Parcel;
import android.os.Parcelable;
/**
* Base API entity
* @author Sergiy P
*
*/
public abstract class Entity implements Parcelable {
/**
* Owner account's service ID, mandatory for all entities.
*/
private final byte serviceId;
protected Entity(Parcel source) {
serviceId = source.readByte();
}
/**
* @param serviceId owner account's service ID
*/
protected Entity(byte serviceId) {
this.serviceId = serviceId;
}
@Override
public final int describeContents() {
return 0;
}
/**
* Please call super.writeToParcel(Parcel, int) during overriding this method.
*/
@Override
public void writeToParcel(Parcel dest, int flags) {
// The trick to support inheritance.
dest.writeString(getClass().getName());
dest.writeByte(serviceId);
}
/**
* @return the serviceId
*/
public byte getServiceId() {
return serviceId;
}
public static final Parcelable.Creator<Entity> CREATOR = new Parcelable.Creator<Entity>() {
public Entity createFromParcel(Parcel in) {
String className = in.readString();
return Utils.unparcelUnknownEntity(in, className);
}
public Entity[] newArray(int size) {
return new Entity[size];
}
};
}